package com.rc.web.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.rc.pojo.dto.comment.CommentAddDTO;
import com.rc.pojo.dto.comment.CommentPageQuery;
import com.rc.pojo.po.Comment;
import com.rc.pojo.vo.comment.CommentPageVO;
import com.rc.pojo.vo.comment.CommentVO;

import java.util.List;
import java.util.Map;

/**
 * 评论表 服务层。
 *
 * @author sym
 * @since 2024-05-26
 */
public interface CommentService extends IService<Comment> {
    /**
     * 获取一个评论列表
     * @param itemId
     * @param type
     * @return
     */
    List<CommentVO> listByType(Long itemId, Integer type);

    /**
     *
     * @param id
     */
    void viewsAdd(Long id);

    /**
     * 获取评分
     * @param itemId
     * @param type
     * @return
     */
    Double getScore(Long itemId, Integer type);

    /**
     * 获取好评人数
     * @param itemId
     * @param type
     * @return
     */
    Integer getRecommended(Long itemId, Integer type);

    /**
     * 获取最后三个好评论
     * @param itemIds
     * @param type
     * @return
     */
    Map<Long,List<Comment>> getItemLastThreeFavorable(List<Long> itemIds, Integer type);

    /**
     * 发布评论
     * @param dto
     */
    void add(CommentAddDTO dto);


    void updateByConId(Comment comment);

    Page<CommentPageVO> getPage(CommentPageQuery dto);

    CommentVO getOneById(Long id);

    void deletedOneById(Long id);
}
